<html>
<head><meta charset="utf-8"><title>structure of the working group · wg-traits · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/index.html">wg-traits</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html">structure of the working group</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="159186286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186286">(Feb 22 2019 at 19:59)</a>:</h4>
<p>OK, <span class="user-mention" data-user-id="116010">@Aaron Turon</span> -- so, I think we're in agreement that the "traits" effort includes a lot of subprojects and subtasks, some of which are clearly compiler, some lang, and some in between</p>



<a name="159186297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186297">(Feb 22 2019 at 19:59)</a>:</h4>
<p>you mentioned the idea of "what is the right way to update community", I think that's an interesting angle</p>



<a name="159186308"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186308" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186308">(Feb 22 2019 at 19:59)</a>:</h4>
<p>I'm trying to decide how to write out those "subprojects" etc</p>



<a name="159186377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186377">(Feb 22 2019 at 20:00)</a>:</h4>
<p>Yep -- and I think it often turns out that "updating the community" and "updating relevant teams" are extremely well-aligned :)</p>



<a name="159186385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186385">(Feb 22 2019 at 20:00)</a>:</h4>
<p>I see e.g.  a feature-based division</p>
<ul>
<li>specialization</li>
<li>generic associated types</li>
<li>various improvements to trait objects</li>
</ul>



<a name="159186391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186391">(Feb 22 2019 at 20:00)</a>:</h4>
<p>but I also see that within one of those, there are divisions</p>



<a name="159186394"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186394" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186394">(Feb 22 2019 at 20:00)</a>:</h4>
<p>ah, one sec, i have some thoughts from the lang side</p>



<a name="159186412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186412">(Feb 22 2019 at 20:00)</a>:</h4>
<ul>
<li>
<p>Idea stage</p>
<ul>
<li>associated traits, quantification over traits</li>
<li>gadts (<code>where</code> clauses on enum variants)</li>
<li>Trait object improvements</li>
</ul>
</li>
<li>
<p>Pre-RFC stage</p>
<ul>
<li>HRTB for types<ul>
<li>Centril has been working on this</li>
<li><a href="https://github.com/Centril/rfcs/blob/rfc/uniform-generic-bounds/text/0000-uniform-generic-bounds.md" target="_blank" title="https://github.com/Centril/rfcs/blob/rfc/uniform-generic-bounds/text/0000-uniform-generic-bounds.md">https://github.com/Centril/rfcs/blob/rfc/uniform-generic-bounds/text/0000-uniform-generic-bounds.md</a></li>
<li>Related to generic closures,  but the latter is  an important part of the motivation here</li>
</ul>
</li>
<li>Fields in traits<ul>
<li>There’s a detailed RFC text</li>
</ul>
</li>
<li>Delegation</li>
</ul>
</li>
<li>
<p>RFC stage</p>
<ul>
<li>Const interactions</li>
<li>Hidden implementations - <a href="https://github.com/rust-lang/rfcs/pull/2529" target="_blank" title="https://github.com/rust-lang/rfcs/pull/2529">https://github.com/rust-lang/rfcs/pull/2529</a><ul>
<li>Some weirdness with specialization</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Implementation stage</p>
<ul>
<li>GATs</li>
<li>Implied bounds</li>
<li>Trait aliases (needs more design)</li>
<li>Existential types (centril working on fcp)</li>
<li>Associated type defaults</li>
<li>Specialization<ul>
<li>Needs spec-level rework, possibly additional RFC</li>
</ul>
</li>
<li>Associated type bound syntax improvements<ul>
<li>Needs tests</li>
</ul>
</li>
<li>Inherent associated types</li>
<li>Re-re-balancing coherence</li>
</ul>
</li>
</ul>



<a name="159186433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186433">(Feb 22 2019 at 20:01)</a>:</h4>
<p>cc <span class="user-mention" data-user-id="126931">@centril</span></p>



<a name="159186449"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186449" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186449">(Feb 22 2019 at 20:01)</a>:</h4>
<p>/me reads :)</p>



<a name="159186512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186512">(Feb 22 2019 at 20:02)</a>:</h4>
<p>specialization is an interesting case</p>



<a name="159186520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186520">(Feb 22 2019 at 20:02)</a>:</h4>
<p>it feels like it could be subdivided</p>



<a name="159186533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186533">(Feb 22 2019 at 20:02)</a>:</h4>
<p>hm, potentially yeah</p>



<a name="159186543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186543">(Feb 22 2019 at 20:02)</a>:</h4>
<p>it has a kind of zoo of extensions etc</p>



<a name="159186550"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186550" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186550">(Feb 22 2019 at 20:03)</a>:</h4>
<p>ah yes, true</p>



<a name="159186553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186553">(Feb 22 2019 at 20:03)</a>:</h4>
<p>not to mention the "soundness fix"</p>



<a name="159186562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186562">(Feb 22 2019 at 20:03)</a>:</h4>
<p>so i sort of think there's a fractal structure here, where what we want for the WG is similar to what we're trying to do for Lang/Compiler itself</p>



<a name="159186566"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186566" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186566">(Feb 22 2019 at 20:03)</a>:</h4>
<p>I <em>suspect</em> we can ignore intersection impls (lattice impls)</p>



<a name="159186569"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186569" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186569">(Feb 22 2019 at 20:03)</a>:</h4>
<blockquote>
<p>so i sort of think there's a fractal structure here, where what we want for the WG is similar to what we're trying to do for Lang/Compiler itself</p>
</blockquote>
<p>yes</p>



<a name="159186583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186583">(Feb 22 2019 at 20:03)</a>:</h4>
<p>I was thinking similar things</p>



<a name="159186584"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186584" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186584">(Feb 22 2019 at 20:03)</a>:</h4>
<p>that is, we have this big list of potential topics for the WG, and i think we want to designate some of them as "active" (with clear list of folks working on it) and some on the "short list"</p>



<a name="159186588"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186588" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186588">(Feb 22 2019 at 20:03)</a>:</h4>
<p>right</p>



<a name="159186594"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186594" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186594">(Feb 22 2019 at 20:04)</a>:</h4>
<p>and I think we <em>may</em> want to even split a bit more</p>



<a name="159186643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186643">(Feb 22 2019 at 20:04)</a>:</h4>
<p>I guess I'd prefer not, to start</p>



<a name="159186652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186652">(Feb 22 2019 at 20:04)</a>:</h4>
<p>similarly, WG meeting probably wants updates from the various projects, and then periodically gives an overall summary to compiler/lang</p>



<a name="159186655"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186655" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186655">(Feb 22 2019 at 20:04)</a>:</h4>
<p>but you could imagine, if we get sufficiently "empowered", that we kind of split out "folks on specialization", who have their own meeting</p>



<a name="159186671"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186671" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186671">(Feb 22 2019 at 20:04)</a>:</h4>
<p>but I definitely think we want to start out focusing on one or two things</p>



<a name="159186672"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186672" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186672">(Feb 22 2019 at 20:04)</a>:</h4>
<p>yeah</p>



<a name="159186691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186691">(Feb 22 2019 at 20:05)</a>:</h4>
<p>your list of course ignored things like "chalk transition"</p>



<a name="159186697"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186697" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186697">(Feb 22 2019 at 20:05)</a>:</h4>
<p>which isn't really a <em>lang team</em> consideration</p>



<a name="159186709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186709">(Feb 22 2019 at 20:05)</a>:</h4>
<p>right, my list was purely on the lang side</p>



<a name="159186723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186723">(Feb 22 2019 at 20:05)</a>:</h4>
<p>looking at it from the compiler team side, I remain pretty interested in trying to look specifically at lazy normalization and generic associated types</p>



<a name="159186724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186724">(Feb 22 2019 at 20:05)</a>:</h4>
<p>i personally have a lot less clarity on how the compiler side should get broken down</p>



<a name="159186729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186729">(Feb 22 2019 at 20:05)</a>:</h4>
<p>and try to see if there is some "short path" to be made there</p>



<a name="159186790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186790">(Feb 22 2019 at 20:06)</a>:</h4>
<p>which, in fact, might be a good candidate for some technical work on my side:)</p>



<a name="159186802"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186802" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186802">(Feb 22 2019 at 20:06)</a>:</h4>
<p>:)</p>



<a name="159186805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186805">(Feb 22 2019 at 20:06)</a>:</h4>
<p>(I sort of feel an itch to do things, but it has to be something I can do in an hour or two here or there)</p>



<a name="159186820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186820">(Feb 22 2019 at 20:06)</a>:</h4>
<p>so I'm wondering about this</p>



<a name="159186821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186821">(Feb 22 2019 at 20:06)</a>:</h4>
<p>yep, i expect this would be a high-leverage activity</p>



<a name="159186828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186828">(Feb 22 2019 at 20:06)</a>:</h4>
<p>I feel like the list you started on above is a bit too high-level</p>



<a name="159186836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186836">(Feb 22 2019 at 20:07)</a>:</h4>
<p>I'd be interested in trying to push down to more granular tasks</p>



<a name="159186848"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186848" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186848">(Feb 22 2019 at 20:07)</a>:</h4>
<p>(ps, this is something I've been thinking about for a lot of projects)</p>



<a name="159186850"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186850" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186850">(Feb 22 2019 at 20:07)</a>:</h4>
<p>yeah -- it was basically like "what are all the features we're thinking about wrt traits"</p>



<a name="159186856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186856">(Feb 22 2019 at 20:07)</a>:</h4>
<p>basically geting down to a kind of "sea" of next steps</p>



<a name="159186867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186867">(Feb 22 2019 at 20:07)</a>:</h4>
<p>and then trying to see if we can pick one or two that seem compatible</p>



<a name="159186872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186872">(Feb 22 2019 at 20:07)</a>:</h4>
<p>I'm not exactly sure what that means :P</p>



<a name="159186920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186920">(Feb 22 2019 at 20:08)</a>:</h4>
<p>i.e., you could imagine saying "we'll do some very compiler focused and some very lang focused"</p>



<a name="159186922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186922">(Feb 22 2019 at 20:08)</a>:</h4>
<p>since those are like .. nonoverlapping</p>



<a name="159186923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186923">(Feb 22 2019 at 20:08)</a>:</h4>
<p>feels like the "Getting Things Done" methodology :)</p>



<a name="159186929"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186929" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186929">(Feb 22 2019 at 20:08)</a>:</h4>
<blockquote>
<p>basically geting down to a kind of "sea" of next steps</p>
</blockquote>
<p>every time I try to do this, I kind of get stuck trying to figure out how to "represent" those</p>



<a name="159186940"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186940" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186940">(Feb 22 2019 at 20:08)</a>:</h4>
<p>I guess for now just some big paper document or something is the way to start</p>



<a name="159186946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186946">(Feb 22 2019 at 20:08)</a>:</h4>
<p>now you're talking my language ;-)</p>



<a name="159186955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186955">(Feb 22 2019 at 20:09)</a>:</h4>
<p>yeah I mean I always start there, and it kind of works</p>



<a name="159186958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186958">(Feb 22 2019 at 20:09)</a>:</h4>
<p>but after a while I find I want a spreadsheet</p>



<a name="159186960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186960">(Feb 22 2019 at 20:09)</a>:</h4>
<p>then I convert it</p>



<a name="159186961"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186961" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186961">(Feb 22 2019 at 20:09)</a>:</h4>
<p>then I find, oh, wait, I want to write more</p>



<a name="159186963"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186963" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186963">(Feb 22 2019 at 20:09)</a>:</h4>
<p>then I convert it back</p>



<a name="159186965"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186965" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186965">(Feb 22 2019 at 20:09)</a>:</h4>
<p>lol</p>



<a name="159186968"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186968" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186968">(Feb 22 2019 at 20:09)</a>:</h4>
<p>then I think "I want to assign these to people"</p>



<a name="159186969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186969">(Feb 22 2019 at 20:09)</a>:</h4>
<p>and I start making issues</p>



<a name="159186970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186970">(Feb 22 2019 at 20:09)</a>:</h4>
<p>and they get out of date</p>



<a name="159186971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186971">(Feb 22 2019 at 20:09)</a>:</h4>
<p>etc</p>



<a name="159186977"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186977" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186977">(Feb 22 2019 at 20:09)</a>:</h4>
<p>but whatever that's life :P</p>



<a name="159186982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186982">(Feb 22 2019 at 20:09)</a>:</h4>
<p>"welcome to project management, kid"</p>



<a name="159186986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159186986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159186986">(Feb 22 2019 at 20:09)</a>:</h4>
<p>"an endless stream of converting lists of tasks from one format to another"</p>



<a name="159187041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187041">(Feb 22 2019 at 20:10)</a>:</h4>
<p>this all feels very validating lol</p>



<a name="159187054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187054">(Feb 22 2019 at 20:10)</a>:</h4>
<p>actually, omnioutliner ...</p>



<a name="159187056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187056">(Feb 22 2019 at 20:10)</a>:</h4>
<p>did you ever use that?</p>



<a name="159187057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187057">(Feb 22 2019 at 20:10)</a>:</h4>
<p>of course, I can't use it now</p>



<a name="159187062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187062">(Feb 22 2019 at 20:11)</a>:</h4>
<p>/me sheds a tear for all the great mac apps</p>



<a name="159187075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187075">(Feb 22 2019 at 20:11)</a>:</h4>
<p>also, it was not on the internet</p>



<a name="159187086"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187086" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187086">(Feb 22 2019 at 20:11)</a>:</h4>
<p><em>anyway</em>...</p>



<a name="159187099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187099">(Feb 22 2019 at 20:11)</a>:</h4>
<blockquote>
<p>did you ever use that?</p>
</blockquote>
<p>i didn't. only ever omnigraffle (which was pretty cool)</p>



<a name="159187148"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187148" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187148">(Feb 22 2019 at 20:12)</a>:</h4>
<p>basically I feel like what I want is sort of a spreadsheet where I can expand to write text</p>



<a name="159187157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187157">(Feb 22 2019 at 20:12)</a>:</h4>
<p>so I can reorder rows and hide details etc</p>



<a name="159187162"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187162" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187162">(Feb 22 2019 at 20:12)</a>:</h4>
<p>but anyway</p>



<a name="159187172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187172">(Feb 22 2019 at 20:12)</a>:</h4>
<blockquote>
<p>"welcome to project management, kid"</p>
</blockquote>
<p>this is somewhat offtopic, but i do wonder if this is an area where we could call for help from people with more experience, or who particularly like this kind of tracking work</p>



<a name="159187178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187178">(Feb 22 2019 at 20:12)</a>:</h4>
<p>it does feel like there <strong>must</strong> be a better answer</p>



<a name="159187186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187186">(Feb 22 2019 at 20:13)</a>:</h4>
<p>but then again most people seem to just hate on the tools i've heard about</p>



<a name="159187191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187191">(Feb 22 2019 at 20:13)</a>:</h4>
<p>could be worth looking at GitHub projects again</p>



<a name="159187195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187195">(Feb 22 2019 at 20:13)</a>:</h4>
<p>I was wondering about it</p>



<a name="159187203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187203">(Feb 22 2019 at 20:13)</a>:</h4>
<p>well, for now I created a <a href="https://paper.dropbox.com/doc/Traits-Roadmap-sketch--AYEYyqaNyA~~NOuXZb2hCbyOAg-m6hucUslp7GihsY3SjNN2" target="_blank" title="https://paper.dropbox.com/doc/Traits-Roadmap-sketch--AYEYyqaNyA~~NOuXZb2hCbyOAg-m6hucUslp7GihsY3SjNN2">DropBox paper document</a> that contains the stuff you added before</p>



<a name="159187212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187212">(Feb 22 2019 at 20:13)</a>:</h4>
<p>I mean what I sort of want is to like buy a bunch of index cards</p>



<a name="159187216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187216">(Feb 22 2019 at 20:13)</a>:</h4>
<p>and spread them out into big piles</p>



<a name="159187270"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187270" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187270">(Feb 22 2019 at 20:14)</a>:</h4>
<p>that... sounds like GitHub projects :)</p>



<a name="159187300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187300">(Feb 22 2019 at 20:14)</a>:</h4>
<p>yeah, I know</p>



<a name="159187303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187303">(Feb 22 2019 at 20:14)</a>:</h4>
<p>but I am skeptical of that particular incarnation</p>



<a name="159187315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187315">(Feb 22 2019 at 20:15)</a>:</h4>
<p>maybe I am wrong to be so skeptical</p>



<a name="159187319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187319">(Feb 22 2019 at 20:15)</a>:</h4>
<p>worth another try</p>



<a name="159187540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187540">(Feb 22 2019 at 20:18)</a>:</h4>
<p><span class="user-mention" data-user-id="116010">@Aaron Turon</span> I don't really remember, how close do you think <a href="http://aturon.github.io/2018/04/05/sound-specialization/" target="_blank" title="http://aturon.github.io/2018/04/05/sound-specialization/">the "sound and ergonomic specialization" blog post</a> is to a real proposal?</p>



<a name="159187541"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187541" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187541">(Feb 22 2019 at 20:18)</a>:</h4>
<p>I need to re-read, clearly</p>



<a name="159187593"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187593" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187593">(Feb 22 2019 at 20:19)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> i think it's pretty close</p>



<a name="159187594"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187594" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187594">(Feb 22 2019 at 20:19)</a>:</h4>
<p>i'm sure there's missing detail of course</p>



<a name="159187604"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187604" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187604">(Feb 22 2019 at 20:19)</a>:</h4>
<p>but the overall idea is pretty clear</p>



<a name="159187690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187690">(Feb 22 2019 at 20:20)</a>:</h4>
<p>that's my memory</p>



<a name="159187928"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187928" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187928">(Feb 22 2019 at 20:24)</a>:</h4>
<p>ok, so I sort of sketched out what I see as the <a href="https://paper.dropbox.com/doc/Traits-Roadmap-sketch--AYEYyqaNyA~~NOuXZb2hCbyOAg-m6hucUslp7GihsY3SjNN2#:uid=647695856449492655165148&amp;h2=Specialization" target="_blank" title="https://paper.dropbox.com/doc/Traits-Roadmap-sketch--AYEYyqaNyA~~NOuXZb2hCbyOAg-m6hucUslp7GihsY3SjNN2#:uid=647695856449492655165148&amp;h2=Specialization">next steps for specialization</a> -- it's an interesting case in that they are almost <em>entirely</em> on the chalk side right now</p>



<a name="159187999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159187999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159187999">(Feb 22 2019 at 20:26)</a>:</h4>
<p>yes, that was my impression also <span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span></p>



<a name="159188320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188320">(Feb 22 2019 at 20:30)</a>:</h4>
<p><span class="user-mention" data-user-id="117350">@Sunjay Varma</span> man, do you remember, a long time back we kind of walked through what was needed to implement GATs in rustc -- I don't recall where we took notes, though..maybe you do?</p>



<a name="159188544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188544">(Feb 22 2019 at 20:32)</a>:</h4>
<p>Yes let me find them</p>



<a name="159188547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188547">(Feb 22 2019 at 20:32)</a>:</h4>
<p>These notes are probably SUPER outdated</p>



<a name="159188660"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188660" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188660">(Feb 22 2019 at 20:34)</a>:</h4>
<p># 2018.03.02</p>
<p>More refined list:</p>
<ul>
<li>[ ] Add some of the comments and other knowledge embedded in the commit to the source or rust-guide as appropriate<ul>
<li>[ ] For example, this comment feels like it could just be added to the source.</li>
</ul>
</li>
<li>[ ] Methods that convert a Projection into a TraitRef (example)<ul>
<li>[ ] Suspicious method, investigate callers</li>
</ul>
</li>
<li>[ ] Some refactorings in astconv to plumb type parameters through where needed</li>
<li>[ ] Creating test cases where we lack coverage:<ul>
<li>[ ] “expected behavior” tests</li>
<li>[ ] lifetime shadowing tests <code>trait Foo&lt;``'``a&gt; { type Item&lt;``'``a&gt;; &lt;-- illegal }</code></li>
<li>[ ] tests for writing explicit <code>&lt;Vec&lt;T&gt; as Iterable&gt;::Iterator&lt;'a&gt;</code>-style types</li>
<li>[ ] tests for <code>Vec&lt;T&gt;::Iterator&lt;``'``a&gt;</code> shorthand form<ul>
<li>[ ] we may want to hold off on this, depending how easy/hard it is</li>
</ul>
</li>
<li>[ ] tests for type aliases</li>
</ul>
</li>
<li>[ ] Extend parser to support additional forms of GATs that are commented in tests (<a href="https://github.com/rust-lang/rust/pull/45904/files#diff-200db0b66e9d122b7a925e84dd6d44afR33" target="_blank" title="https://github.com/rust-lang/rust/pull/45904/files#diff-200db0b66e9d122b7a925e84dd6d44afR33">https://github.com/rust-lang/rust/pull/45904/files#diff-200db0b66e9d122b7a925e84dd6d44afR33</a>)</li>
</ul>
<p>To do list copied from gitter:</p>
<p>Here's what I have on my personal to-do list for GATs:</p>
<p>1. Implement type checking things from call with Niko<br>
  - <a href="https://github.com/sunjay/rust/commit/2098edd0a2b9b2ffbb55d56bb5e31ca8d0576410" target="_blank" title="https://github.com/sunjay/rust/commit/2098edd0a2b9b2ffbb55d56bb5e31ca8d0576410">https://github.com/sunjay/rust/commit/2098edd0a2b9b2ffbb55d56bb5e31ca8d0576410</a><br>
2. Check if lifetime shadowing should be supported and if so, make sure it is. Either way, add a test case.<br>
    trait Foo&lt;'a&gt; {<br>
        type Item&lt;'a&gt;;<br>
        // Self::Item&lt;'a&gt; refers to the 'a defined below, not the 'a in Foo<br>
        type Item2&lt;'a&gt;: Iterator&lt;Item = Self::Item&lt;'a&gt;&gt;;<br>
    }<br>
3. Add parsing for additional forms of GATs (e.g. in trait bounds) -- see commented out portions in tests<br>
4. Make sure turbofish/universal function call syntax works with GATs</p>



<a name="159188667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188667">(Feb 22 2019 at 20:34)</a>:</h4>
<p>From almost a year ago!</p>



<a name="159188683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188683">(Feb 22 2019 at 20:34)</a>:</h4>
<p>Those are the last notes we made when we had that call and I handed off the work</p>



<a name="159188687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188687">(Feb 22 2019 at 20:34)</a>:</h4>
<p>I'm not sure what happened after that</p>



<a name="159188689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188689">(Feb 22 2019 at 20:34)</a>:</h4>
<p>Maybe <span class="user-mention" data-user-id="116883">@tmandry</span> knows?</p>



<a name="159188926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188926">(Feb 22 2019 at 20:38)</a>:</h4>
<p><span class="user-mention" data-user-id="117350">@Sunjay Varma</span> where did those notes come from? :)</p>



<a name="159188932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188932">(Feb 22 2019 at 20:38)</a>:</h4>
<p>I sort of remember writing them together</p>



<a name="159188941"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188941" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188941">(Feb 22 2019 at 20:38)</a>:</h4>
<p>anyway, that's pretty helpful</p>



<a name="159188949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188949">(Feb 22 2019 at 20:38)</a>:</h4>
<p>From our sunjay-nmatsakis document</p>



<a name="159188955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188955">(Feb 22 2019 at 20:38)</a>:</h4>
<p>Very bottom</p>



<a name="159188982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188982">(Feb 22 2019 at 20:39)</a>:</h4>
<p>ah, awesome</p>



<a name="159188992"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188992" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sunjay Varma <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188992">(Feb 22 2019 at 20:39)</a>:</h4>
<p>(thank goodness we kept all those notes lol)</p>



<a name="159188998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159188998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159188998">(Feb 22 2019 at 20:39)</a>:</h4>
<p>:)</p>



<a name="159189001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189001">(Feb 22 2019 at 20:39)</a>:</h4>
<p>notes ftw</p>



<a name="159189006"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189006" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189006">(Feb 22 2019 at 20:39)</a>:</h4>
<p>I just realized that although I removed myself from highfive</p>



<a name="159189010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189010">(Feb 22 2019 at 20:39)</a>:</h4>
<p>I have not been keeping up with my reviewing</p>



<a name="159189012"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189012" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189012">(Feb 22 2019 at 20:39)</a>:</h4>
<p>that is, the existing assignments I had</p>



<a name="159189013"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189013" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189013">(Feb 22 2019 at 20:39)</a>:</h4>
<p>sigh</p>



<a name="159189017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189017">(Feb 22 2019 at 20:39)</a>:</h4>
<p>I will do better next wek</p>



<a name="159189068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189068">(Feb 22 2019 at 20:40)</a>:</h4>
<p>but in particular, in there, there <em>was</em> a PR IIRC for one of these trait working group items</p>



<a name="159189075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189075">(Feb 22 2019 at 20:40)</a>:</h4>
<p><span class="user-mention" data-user-id="116010">@Aaron Turon</span> I may change the reviewer on that PR to you...</p>



<a name="159189356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159189356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159189356">(Feb 22 2019 at 20:44)</a>:</h4>
<p>I...think I misremembered. I was thinking of <a href="https://github.com/rust-lang/rust/pull/57545" target="_blank" title="https://github.com/rust-lang/rust/pull/57545">https://github.com/rust-lang/rust/pull/57545</a></p>



<a name="159190142"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190142" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190142">(Feb 22 2019 at 20:56)</a>:</h4>
<p><span class="user-mention" data-user-id="116010">@Aaron Turon</span> <span class="user-mention" data-user-id="126931">@centril</span> y'all put "Inherent associated types" as "implementation" side -- do we have an RFC on this topic?</p>



<a name="159190151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190151">(Feb 22 2019 at 20:56)</a>:</h4>
<p>was that part of the original associated items RFC even? I can't recall</p>



<a name="159190188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190188">(Feb 22 2019 at 20:56)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> yep; blocked on lazy norm?</p>



<a name="159190359"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190359" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190359">(Feb 22 2019 at 20:58)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> probably, feels like it'd be better to start there, as inherent associated items are not super high priority or anything</p>



<a name="159190378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190378">(Feb 22 2019 at 20:59)</a>:</h4>
<p>now I have to check, did you all put the whole type alias work on this list...</p>



<a name="159190393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190393">(Feb 22 2019 at 20:59)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> i.e. "fixing the bugs" we wanted to fix for 2018?</p>



<a name="159190414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190414">(Feb 22 2019 at 20:59)</a>:</h4>
<p>yeah, and transitioning the impl to one based on lazy norm</p>



<a name="159190430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190430">(Feb 22 2019 at 20:59)</a>:</h4>
<p>at least those are the two sides of the coin for me</p>



<a name="159190457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190457">(Feb 22 2019 at 21:00)</a>:</h4>
<p>no, I omitted those</p>



<a name="159190868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190868">(Feb 22 2019 at 21:05)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  chalk + lazy norm seem to be the general unblocker for an assortment of language features and fixes</p>



<a name="159190924"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159190924" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159190924">(Feb 22 2019 at 21:06)</a>:</h4>
<p>(type aliases, inherent associated types, generic closures, GATs, ...)</p>



<a name="159191575"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159191575" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159191575">(Feb 22 2019 at 21:15)</a>:</h4>
<p>well, I think GATs at least can be done another way</p>



<a name="159191586"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159191586" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159191586">(Feb 22 2019 at 21:15)</a>:</h4>
<p>but definitely it would be helpful</p>



<a name="159191885"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159191885" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159191885">(Feb 22 2019 at 21:19)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> I saw you wrote this in the paper: "we should weaken these to only work inside a crate to begin with so that we don’t have problems with GADTs"</p>



<a name="159191894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159191894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159191894">(Feb 22 2019 at 21:19)</a>:</h4>
<p>could you elaborate?</p>



<a name="159191907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159191907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159191907">(Feb 22 2019 at 21:19)</a>:</h4>
<p>I think you already did some time ago but I cannot remember :)</p>



<a name="159191909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159191909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159191909">(Feb 22 2019 at 21:19)</a>:</h4>
<p><span class="user-mention" data-user-id="131694">@scalexm</span>  on the problems?</p>



<a name="159191913"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159191913" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159191913">(Feb 22 2019 at 21:19)</a>:</h4>
<p>yes</p>



<a name="159192042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192042">(Feb 22 2019 at 21:21)</a>:</h4>
<p>Consider:</p>
<div class="codehilite"><pre><span></span><span class="k">enum</span> <span class="nc">Foo</span><span class="o">&lt;</span><span class="n">T</span>: <span class="nc">Bar</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Baz</span><span class="p">(</span><span class="kt">u8</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">Quux</span><span class="p">(</span><span class="n">T</span><span class="p">),</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>


<p>if we have implied bounds that work cross-crate, then this cannot be later changed to:</p>
<div class="codehilite"><pre><span></span><span class="k">enum</span> <span class="nc">Foo</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Baz</span><span class="p">(</span><span class="kt">u8</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">Quux</span><span class="p">(</span><span class="n">T</span><span class="p">)</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">T</span>: <span class="nc">Bar</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>



<a name="159192087"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192087" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192087">(Feb 22 2019 at 21:21)</a>:</h4>
<p>ok but the same is true for, e.g.:</p>
<div class="codehilite"><pre><span></span><span class="k">enum</span> <span class="nc">Foo</span><span class="o">&lt;</span><span class="n">T</span>: <span class="na">&#39;a</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Baz</span><span class="p">(</span><span class="kt">u8</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">Quux</span><span class="p">(</span><span class="o">&amp;</span><span class="na">&#39;a</span><span class="w"> </span><span class="n">T</span><span class="p">),</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>



<a name="159192091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192091">(Feb 22 2019 at 21:21)</a>:</h4>
<p>I know <span aria-label="frown" class="emoji emoji-1f641" role="img" title="frown">:frown:</span></p>



<a name="159192133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192133">(Feb 22 2019 at 21:22)</a>:</h4>
<p>but yes I see the problem</p>



<a name="159192359"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192359" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192359">(Feb 22 2019 at 21:24)</a>:</h4>
<p>The lifetime thing is even worse, because we have lifetime elision and accept:</p>
<div class="codehilite"><pre><span></span><span class="k">enum</span> <span class="nc">Foo</span><span class="o">&lt;</span><span class="na">&#39;a</span><span class="p">,</span><span class="w"> </span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Baz</span><span class="p">(</span><span class="kt">u8</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">Quux</span><span class="p">(</span><span class="o">&amp;</span><span class="na">&#39;a</span><span class="w"> </span><span class="n">T</span><span class="p">),</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>


<p>but ideally we would really want this to mean:</p>
<div class="codehilite"><pre><span></span><span class="k">enum</span> <span class="nc">Foo</span><span class="o">&lt;</span><span class="na">&#39;a</span><span class="p">,</span><span class="w"> </span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Baz</span><span class="p">(</span><span class="kt">u8</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">Quux</span><span class="p">(</span><span class="o">&amp;</span><span class="na">&#39;a</span><span class="w"> </span><span class="n">T</span><span class="p">)</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">T</span>: <span class="na">&#39;a</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>


<p>and not:</p>
<div class="codehilite"><pre><span></span><span class="k">enum</span> <span class="nc">Foo</span><span class="o">&lt;</span><span class="na">&#39;a</span><span class="p">,</span><span class="w"> </span><span class="n">T</span>: <span class="na">&#39;a</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Baz</span><span class="p">(</span><span class="kt">u8</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">Quux</span><span class="p">(</span><span class="o">&amp;</span><span class="na">&#39;a</span><span class="w"> </span><span class="n">T</span><span class="p">),</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>



<a name="159192398"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192398" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192398">(Feb 22 2019 at 21:25)</a>:</h4>
<p>I don't know that this is true</p>



<a name="159192431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192431">(Feb 22 2019 at 21:25)</a>:</h4>
<p>You might want that, but you might want (e.g.) the freedom to change between variants</p>



<a name="159192461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192461">(Feb 22 2019 at 21:25)</a>:</h4>
<p>( I'm mostly just saying, it's pretty complex )</p>



<a name="159192558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192558">(Feb 22 2019 at 21:27)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  not having cross-crate retains the freedom <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="159192633"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192633" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192633">(Feb 22 2019 at 21:27)</a>:</h4>
<p>This reminds me -- on a separate note -- we were thinking at some point about trying to revisit things like <code>AsRef</code></p>



<a name="159192687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192687">(Feb 22 2019 at 21:28)</a>:</h4>
<p>likely targeting the next edition, as it would likely be a backwards incompatible change</p>



<a name="159192699"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192699" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192699">(Feb 22 2019 at 21:28)</a>:</h4>
<p>basically giving a way for traits etc to "opt out" of fragile inference</p>



<a name="159192700"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192700" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192700">(Feb 22 2019 at 21:28)</a>:</h4>
<p>more problematic is perhaps that you now need logic to avoid inferring <code>where T: 'a</code> on <code>enum Foo&lt;'a, T&gt;</code></p>



<a name="159192730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192730">(Feb 22 2019 at 21:28)</a>:</h4>
<p>(if we had such a mechanism, it might be applicable here too)</p>



<a name="159192741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192741">(Feb 22 2019 at 21:28)</a>:</h4>
<p>that feels like something that should be on a list</p>



<a name="159192783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192783">(Feb 22 2019 at 21:29)</a>:</h4>
<p>(avoiding to infer when <code>Quux(&amp;'a T) where T: 'a</code> is written explicitly)</p>



<a name="159192796"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192796" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192796">(Feb 22 2019 at 21:29)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  say more re. opt out?</p>



<a name="159192801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159192801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159192801">(Feb 22 2019 at 21:29)</a>:</h4>
<p>sketch?</p>



<a name="159193185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159193185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159193185">(Feb 22 2019 at 21:34)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> I had imagined some form of attribute on a trait that basically instructs us not to pick an impl unless the input types are fully known (to some extent)</p>



<a name="159193228"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159193228" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159193228">(Feb 22 2019 at 21:35)</a>:</h4>
<p>ok hmm; I'll need more than that... ;) e.g. a snippet or something</p>



<a name="159193256"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159193256" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159193256">(Feb 22 2019 at 21:35)</a>:</h4>
<p>with "problem to solve", "here's how we solved it", and "why the solution worked"</p>



<a name="159194047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194047">(Feb 22 2019 at 21:46)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> here's some elaboration:</p>
<div class="codehilite"><pre><span></span><span class="k">struct</span> <span class="nc">Foo</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">..</span><span class="w"> </span><span class="p">};</span><span class="w"></span>
<span class="k">struct</span> <span class="nc">Bar</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">..</span><span class="w"> </span><span class="p">};</span><span class="w"></span>
<span class="k">impl</span><span class="w"> </span><span class="nb">AsRef</span><span class="o">&lt;</span><span class="n">Bar</span><span class="o">&gt;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">Foo</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// this is the only AsRef impl for `Foo`</span>

<span class="k">fn</span> <span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Foo</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">..</span><span class="w"> </span><span class="p">};</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">bar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">foo</span><span class="p">.</span><span class="n">as_ref</span><span class="p">();</span><span class="w"> </span><span class="c1">// this will *infer* that bar: Bar because it&#39;s the only impl.</span>
<span class="p">}</span><span class="w"></span>
</pre></div>


<p>The inference here is brittle because if any additional <code>AsRef</code> impls are added for <code>Foo</code>, inference will stop working</p>



<a name="159194072"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194072" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194072">(Feb 22 2019 at 21:47)</a>:</h4>
<p>we hit this in <code>std</code> a lot, where adding "innocent" conversion impls ends up breaking people's code that was relying on the inference</p>



<a name="159194111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194111">(Feb 22 2019 at 21:47)</a>:</h4>
<p><span class="user-mention" data-user-id="116010">@Aaron Turon</span> oh yes; it seems to me that we'd want some sort of "don't assume it's the only impl" attribute</p>



<a name="159194122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194122">(Feb 22 2019 at 21:47)</a>:</h4>
<p>(don't assume even if it is)</p>



<a name="159194127"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194127" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194127">(Feb 22 2019 at 21:47)</a>:</h4>
<p>what <span class="user-mention" data-user-id="116009">@nikomatsakis</span> is proposing is something like:</p>
<div class="codehilite"><pre><span></span><span class="k">trait</span><span class="w"> </span><span class="nb">AsRef</span><span class="o">&lt;</span><span class="cp">#[do_not_infer]</span><span class="w"> </span><span class="n">Out</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
</pre></div>



<a name="159194345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194345">(Feb 22 2019 at 21:50)</a>:</h4>
<p>yep, sorry <span class="user-mention" data-user-id="126931">@centril</span>, got pulled off to look at some beta backport things :)</p>



<a name="159194399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194399">(Feb 22 2019 at 21:51)</a>:</h4>
<p><span class="user-mention" data-user-id="116010">@Aaron Turon</span> well, at least we have the syntactic support ready due to <code>#[may_dangle]</code> :D</p>



<a name="159194721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194721">(Feb 22 2019 at 21:56)</a>:</h4>
<p><span class="user-mention" data-user-id="116010">@Aaron Turon</span> so... let's see if I understand this... <code>#[no_infer] Bar</code> means that when we have a unification var <code>?T</code>, the inferencer will avoid equating <code>?T = MyBar</code> due to constraints such as "only impl" and require that e.g. <code>let bar: &amp;MyBar = foo.as_ref();</code> or <code>&lt;_ as AsRef&lt;MyBar&gt;&gt;::as_ref(&amp;foo)</code> be written explicitly?</p>



<a name="159194738"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194738" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194738">(Feb 22 2019 at 21:56)</a>:</h4>
<p>in a sense, <code>#[dont_infer]</code> is intentionally dumbing down the inferencer?</p>



<a name="159194746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194746">(Feb 22 2019 at 21:56)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> yep!</p>



<a name="159194770"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194770" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194770">(Feb 22 2019 at 21:57)</a>:</h4>
<p>when we first introduced type parameters to traits, we didn't intend for them to be inferred in this "clever" way, but it turned out to be pretty essential</p>



<a name="159194787"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194787" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194787">(Feb 22 2019 at 21:57)</a>:</h4>
<p>IIRC <span class="user-mention" data-user-id="116009">@nikomatsakis</span> wrote about this at length <a href="http://smallcultfollowing.com/babysteps/blog/2014/09/30/multi-and-conditional-dispatch-in-traits/" target="_blank" title="http://smallcultfollowing.com/babysteps/blog/2014/09/30/multi-and-conditional-dispatch-in-traits/">here</a></p>



<a name="159194836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159194836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159194836">(Feb 22 2019 at 21:58)</a>:</h4>
<p>This makes me wonder whether Haskell will infer <code>Bar</code> or not given MPTCs and a single instance</p>



<a name="159195385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159195385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159195385">(Feb 22 2019 at 22:05)</a>:</h4>
<p><span class="user-mention" data-user-id="116010">@Aaron Turon</span> </p>
<div class="codehilite"><pre><span></span><span class="cm">{-# LANGUAGE MultiParamTypeClasses #-}</span>

<span class="kr">data</span> <span class="kt">Foo</span> <span class="ow">=</span> <span class="kt">Foo</span>
<span class="kr">data</span> <span class="kt">Bar</span> <span class="ow">=</span> <span class="kt">Bar</span>
<span class="kr">data</span> <span class="kt">Ref</span> <span class="n">a</span> <span class="ow">=</span> <span class="kt">Ref</span> <span class="n">a</span> <span class="c1">-- Let&#39;s pretend...</span>

<span class="kr">class</span> <span class="kt">AsRef</span> <span class="n">self</span> <span class="n">to</span> <span class="kr">where</span> <span class="n">asRef</span> <span class="ow">::</span> <span class="kt">Ref</span> <span class="n">self</span> <span class="ow">-&gt;</span> <span class="kt">Ref</span> <span class="n">to</span>

<span class="kr">instance</span> <span class="kt">AsRef</span> <span class="kt">Foo</span> <span class="kt">Bar</span> <span class="kr">where</span> <span class="n">asRef</span> <span class="ow">=</span> <span class="n">undefined</span>

<span class="nf">foo</span> <span class="ow">::</span> <span class="kt">Foo</span>
<span class="nf">foo</span> <span class="ow">=</span> <span class="kt">Foo</span><span class="p">;</span>

<span class="nf">refFoo</span> <span class="ow">::</span> <span class="kt">Ref</span> <span class="kt">Foo</span>
<span class="nf">refFoo</span> <span class="ow">=</span> <span class="kt">Ref</span> <span class="n">foo</span>

<span class="nf">refBar</span> <span class="ow">=</span> <span class="n">asRef</span> <span class="n">refFoo</span>

<span class="cm">{-</span>
<span class="cm">main.hs:17:10: error:</span>
<span class="cm">    • Ambiguous type variable ‘to0’ arising from a use of ‘asRef’</span>
<span class="cm">      prevents the constraint ‘(AsRef Foo to0)’ from being solved.</span>
<span class="cm">      Relevant bindings include refBar :: Ref to0 (bound at main.hs:17:1)</span>
<span class="cm">      Probable fix: use a type annotation to specify what ‘to0’ should be.</span>
<span class="cm">      These potential instance exist:</span>
<span class="cm">        instance AsRef Foo Bar -- Defined at main.hs:9:10</span>
<span class="cm">    • In the expression: asRef refFoo</span>
<span class="cm">      In an equation for ‘refBar’: refBar = asRef refFoo</span>
<span class="cm">   |</span>
<span class="cm">17 | refBar = asRef refFoo</span>
<span class="cm">   |          ^^^^^^^^^^^^</span>
<span class="cm">-}</span>
</pre></div>



<a name="159195581"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159195581" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159195581">(Feb 22 2019 at 22:08)</a>:</h4>
<p>hah!</p>



<a name="159195614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159195614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159195614">(Feb 22 2019 at 22:08)</a>:</h4>
<p>NB i've regularly abused our stronger inference to work around limitations</p>



<a name="159195628"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159195628" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159195628">(Feb 22 2019 at 22:08)</a>:</h4>
<p>e.g. you can fake "mutually exclusive traits" that way</p>



<a name="159195777"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159195777" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159195777">(Feb 22 2019 at 22:10)</a>:</h4>
<p>(MPTCs are not that frequently used in Haskell I think... when they are, it's combined with fundeps which practically equal to associated type families, e.g. for monad transformers and such)</p>



<a name="159196462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196462">(Feb 22 2019 at 22:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116010">@Aaron Turon</span>  <span class="user-mention" data-user-id="116009">@nikomatsakis</span> wrote down the AsRef stuff in the paper doc</p>



<a name="159196528"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196528" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196528">(Feb 22 2019 at 22:21)</a>:</h4>
<p>So I was thinking</p>



<a name="159196582"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196582" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196582">(Feb 22 2019 at 22:22)</a>:</h4>
<p>we have our normal meeting scheduled on Monday</p>



<a name="159196604"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196604" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196604">(Feb 22 2019 at 22:22)</a>:</h4>
<p>basically I was thinking it would be pretty valuable to try and go furthre with this roadmap and try to turn it into something more concrete</p>



<a name="159196617"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196617" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196617">(Feb 22 2019 at 22:23)</a>:</h4>
<p>maybe extend the meeting to 1hr</p>



<a name="159196645"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196645" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196645">(Feb 22 2019 at 22:23)</a>:</h4>
<p>I would say maybe use Zoom for more bandwidth, but I think many folks prefer Zulip, not sure about that part. With enough prep I think a Zulip meeting can do really well for these sorts of things but sometimes I also find it hard, because it's hard to keep the doc + the chat kind of both visible at once</p>



<a name="159196702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196702">(Feb 22 2019 at 22:24)</a>:</h4>
<p>anyway, I'm prob going to stop for now but I feel like I'm <em>starting</em> to see a picture here --</p>



<a name="159196757"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196757" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196757">(Feb 22 2019 at 22:25)</a>:</h4>
<p>could also try to do a kind of "pre-call" to work some of this stuff out (maybe in our regular slot, <span class="user-mention" data-user-id="116010">@Aaron Turon</span>?)</p>



<a name="159196768"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196768" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196768">(Feb 22 2019 at 22:25)</a>:</h4>
<blockquote>
<p>basically I was thinking it would be pretty valuable to try and go furthre with this roadmap and try to turn it into something more concrete</p>
</blockquote>
<p>strong <span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span> -- however, if we go with the monday meeting, we should be sure to ping additional stakeholders (e.g. the lang team)</p>



<a name="159196786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196786">(Feb 22 2019 at 22:25)</a>:</h4>
<p>that is, we had been thinking about making a WG-lang-traits group; that's getting folded into this one but we need to make sure to contact everybody</p>



<a name="159196802"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196802" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196802">(Feb 22 2019 at 22:25)</a>:</h4>
<p>yeah. This is the time when I'm annoyed about the discord-zulip split :)</p>



<a name="159196804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196804">(Feb 22 2019 at 22:25)</a>:</h4>
<blockquote>
<p>could also try to do a kind of "pre-call" to work some of this stuff out (maybe in our regular slot, <span class="user-mention silent" data-user-id="116010">@Aaron Turon</span>?)</p>
</blockquote>
<p>yep, that was pretty much what we were planning (on a more individual level) anyway</p>



<a name="159196849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196849">(Feb 22 2019 at 22:26)</a>:</h4>
<p>Right</p>



<a name="159196863"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196863" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196863">(Feb 22 2019 at 22:26)</a>:</h4>
<p>I could just go ahead and throw that on the calendar with a zoom meeting</p>



<a name="159196890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196890">(Feb 22 2019 at 22:26)</a>:</h4>
<p>I'm trying to decide how much homework I want to do</p>



<a name="159196895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196895">(Feb 22 2019 at 22:26)</a>:</h4>
<p>hah</p>



<a name="159196900"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196900" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196900">(Feb 22 2019 at 22:26)</a>:</h4>
<p>I feel like I need to do at leats some :)</p>



<a name="159196926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196926">(Feb 22 2019 at 22:27)</a>:</h4>
<p>Anyway, I'll create the event, we can ping lang team about it</p>



<a name="159196930"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159196930" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Turon <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159196930">(Feb 22 2019 at 22:27)</a>:</h4>
<p>i'm definitely game to help organize, since ultimately we want to grow me into helping lead this group</p>



<a name="159197875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159197875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159197875">(Feb 22 2019 at 22:41)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  is <a href="https://github.com/nikomatsakis/fields-in-traits-rfc/blob/master/0000-fields-in-traits.md" target="_blank" title="https://github.com/nikomatsakis/fields-in-traits-rfc/blob/master/0000-fields-in-traits.md">https://github.com/nikomatsakis/fields-in-traits-rfc/blob/master/0000-fields-in-traits.md</a> the last work on FITs?</p>



<a name="159197918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159197918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159197918">(Feb 22 2019 at 22:41)</a>:</h4>
<p>Yes basically, at least the last bit that's been written down :)</p>



<a name="159197973"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159197973" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159197973">(Feb 22 2019 at 22:42)</a>:</h4>
<p>I feel like my thoughts have shifted some since I wrote it but I've not really revisited</p>



<a name="159198282"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/structure%20of%20the%20working%20group/near/159198282" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/structure.20of.20the.20working.20group.html#159198282">(Feb 22 2019 at 22:47)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  probably intersects with ideas in <a href="https://github.com/rust-lang/rfcs/issues/1215" target="_blank" title="https://github.com/rust-lang/rfcs/issues/1215">https://github.com/rust-lang/rfcs/issues/1215</a></p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>